package com.ethink.warehouse.api;

import com.ethink.warehouse.api.info.MateInventoryCxLogModeInfo;
import com.ethink.warehouse.api.request.*;
import com.ethink.warehouse.api.response.MateInventoryCxLogGetDetailResponse;
import com.ethink.warehouse.api.response.MateInventoryCxLogQueryResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.response.MateInventoryCxLogAddResponse;

/**
 * 库存拆卸记录 Facade接口
 *
 * @author default
 * @date 2022-12-07
 */
@FeignClient(name = "ethink-warehouse-service", path = "warehouse-service/facade/v1/mateInventoryCxLog", contextId = "mateInventoryCxLogFacade")
public interface MateInventoryCxLogFacade {

    @PostMapping("/queryMateInventoryCxLog")
    @ResponseBody
    Page<MateInventoryCxLogQueryResponse> queryMateInventoryCxLog(@RequestBody MateInventoryCxLogQueryRequest request);

    @PostMapping("/getMateInventoryCxLogById")
    @ResponseBody
    MateInventoryCxLogGetDetailResponse getMateInventoryCxLogById(@RequestParam("mateInventoryCxLogId") Long mateInventoryCxLogId);

    @PostMapping("/addMateInventoryCxLog")
    @ResponseBody
    MateInventoryCxLogAddResponse addMateInventoryCxLog(@RequestBody MateInventoryCxLogAddRequest request);

    @PostMapping("/updateMateInventoryCxLog")
    @ResponseBody
    void updateMateInventoryCxLog(@RequestBody MateInventoryCxLogUpdateRequest request);

    @PostMapping("/approvedMateInventoryCxLog")
    @ResponseBody
    void approvedMateInventoryCxLog(@RequestBody MateInventoryCxLogApprovedRequest request);

    @PostMapping("/deleteMateInventoryCxLog")
    @ResponseBody
    void deleteMateInventoryCxLog(@RequestParam("mateInventoryCxLogId") Long mateInventoryCxLogId);

    @PostMapping("/queryMateInventoryCxLogMode")
    @ResponseBody
    Page<MateInventoryCxLogModeInfo> queryMateInventoryCxLogMode(@RequestBody MateInventoryCxLogModeQueryRequest request);

}